ce5707c36997d3762d2cc6c009c6ead74fbfb2a9,engine/src/org/pentaho/di/trans/steps/validator/Validator.java,Validator,validateFields,#RowMetaInterface#Object[]#,238
Before Change
new KettleValidatorException( this, field, KettleValidatorException.ERROR_UNEXPECTED_DATA_TYPE,
BaseMessages.getString( PKG, "Validator.Exception.UnexpectedDataType", field.getFieldName(),
valueMeta.toStringMeta(), validatorMeta.toStringMeta() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
}
// Check various things if the value is not null..
//
if ( !isNull ) {
if ( data.fieldsMinimumLengthAsInt[i] >= 0 || data.fieldsMaximumLengthAsInt[i] >= 0
|| data.minimumValue[i] != null || data.maximumValue[i] != null || data.listValues[i].length > 0
|| field.isSourcingValues() || !Const.isEmpty( data.startString[i] ) || !Const.isEmpty( data.endString[i] )
|| !Const.isEmpty( data.startStringNotAllowed[i] ) || !Const.isEmpty( data.endStringNotAllowed[i] )
|| field.isOnlyNumericAllowed() || data.patternExpected[i] != null || data.patternDisallowed[i] != null ) {
String stringValue = valueMeta.getString( valueData );
int stringLength = stringValue.length();
// Minimum length
//
// if (field.getMinimumLength()>=0 && stringValue.length()<field.getMinimumLength() ) {
if ( data.fieldsMinimumLengthAsInt[i] >= 0 && stringLength < data.fieldsMinimumLengthAsInt[i] ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_SHORTER_THAN_MINIMUM_LENGTH,
BaseMessages.getString( PKG, "Validator.Exception.ShorterThanMininumLength", field.getFieldName(),
valueMeta.getString( valueData ), Integer.toString( stringValue.length() ), field
.getMinimumLength() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// Maximum length
//
// if (field.getMaximumLength()>=0 && stringValue.length()>field.getMaximumLength() ) {
if ( data.fieldsMaximumLengthAsInt[i] >= 0 && stringLength > data.fieldsMaximumLengthAsInt[i] ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_LONGER_THAN_MAXIMUM_LENGTH,
BaseMessages.getString( PKG, "Validator.Exception.LongerThanMaximumLength", field.getFieldName(),
valueMeta.getString( valueData ), Integer.toString( stringValue.length() ), field
.getMaximumLength() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// Minimal value
//
if ( data.minimumValue[i] != null && valueMeta.compare( valueData, validatorMeta, data.minimumValue[i] ) < 0 ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_LOWER_THAN_ALLOWED_MINIMUM,
BaseMessages.getString( PKG, "Validator.Exception.LowerThanMinimumValue", field.getFieldName(),
valueMeta.getString( valueData ), data.constantsMeta[i].getString( data.minimumValue[i] ) ),
field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// Maximum value
//
if ( data.maximumValue[i] != null && valueMeta.compare( valueData, validatorMeta, data.maximumValue[i] ) > 0 ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_HIGHER_THAN_ALLOWED_MAXIMUM,
BaseMessages.getString( PKG, "Validator.Exception.HigherThanMaximumValue", field.getFieldName(),
valueMeta.getString( valueData ), data.constantsMeta[i].getString( data.maximumValue[i] ) ),
field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// In list?
//
if ( field.isSourcingValues() || data.listValues[i].length > 0 ) {
boolean found = false;
for ( Object object : data.listValues[i] ) {
if ( object != null && data.listValues[i] != null
&& valueMeta.compare( valueData, validatorMeta, object ) == 0 ) {
found = true;
}
}
if ( !found ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_VALUE_NOT_IN_LIST,
BaseMessages.getString( PKG, "Validator.Exception.NotInList", field.getFieldName(), valueMeta
.getString( valueData ) ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
}
// Numeric data or strings with only
if ( field.isOnlyNumericAllowed() ) {
if ( valueMeta.isNumeric() || !containsOnlyDigits( valueMeta.getString( valueData ) ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_NON_NUMERIC_DATA,
BaseMessages.getString( PKG, "Validator.Exception.NonNumericDataNotAllowed",
field.getFieldName(), valueMeta.toStringMeta() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
}
// Does not start with string value
//
if ( !Const.isEmpty( data.startString[i] ) && !stringValue.startsWith( data.startString[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_DOES_NOT_START_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.DoesNotStartWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getStartString() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// Ends with string value
//
if ( !Const.isEmpty( data.endString[i] ) && !stringValue.endsWith( data.endString[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_DOES_NOT_END_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.DoesNotStartWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getEndString() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
// Starts with string value
//
if ( !Const.isEmpty( data.startStringNotAllowed[i] )
&& stringValue.startsWith( data.startStringNotAllowed[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_STARTS_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.StartsWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getStartStringNotAllowed() ), field.getFieldName() );
if ( meta.isValidatingAll() ) {
exceptions.add( exception );
} else {
throw exception;
}
}
After Change
new KettleValidatorException( this, field, KettleValidatorException.ERROR_UNEXPECTED_DATA_TYPE,
BaseMessages.getString( PKG, "Validator.Exception.UnexpectedDataType", field.getFieldName(),
valueMeta.toStringMeta(), validatorMeta.toStringMeta() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
}
// Check various things if the value is not null..
//
if ( !isNull ) {
if ( data.fieldsMinimumLengthAsInt[i] >= 0 || data.fieldsMaximumLengthAsInt[i] >= 0
|| data.minimumValue[i] != null || data.maximumValue[i] != null || data.listValues[i].length > 0
|| field.isSourcingValues() || !Const.isEmpty( data.startString[i] ) || !Const.isEmpty( data.endString[i] )
|| !Const.isEmpty( data.startStringNotAllowed[i] ) || !Const.isEmpty( data.endStringNotAllowed[i] )
|| field.isOnlyNumericAllowed() || data.patternExpected[i] != null || data.patternDisallowed[i] != null ) {
String stringValue = valueMeta.getString( valueData );
int stringLength = stringValue.length();
// Minimum length
//
// if (field.getMinimumLength()>=0 && stringValue.length()<field.getMinimumLength() ) {
if ( data.fieldsMinimumLengthAsInt[i] >= 0 && stringLength < data.fieldsMinimumLengthAsInt[i] ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_SHORTER_THAN_MINIMUM_LENGTH,
BaseMessages.getString( PKG, "Validator.Exception.ShorterThanMininumLength", field.getFieldName(),
valueMeta.getString( valueData ), Integer.toString( stringValue.length() ), field
.getMinimumLength() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// Maximum length
//
// if (field.getMaximumLength()>=0 && stringValue.length()>field.getMaximumLength() ) {
if ( data.fieldsMaximumLengthAsInt[i] >= 0 && stringLength > data.fieldsMaximumLengthAsInt[i] ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_LONGER_THAN_MAXIMUM_LENGTH,
BaseMessages.getString( PKG, "Validator.Exception.LongerThanMaximumLength", field.getFieldName(),
valueMeta.getString( valueData ), Integer.toString( stringValue.length() ), field
.getMaximumLength() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// Minimal value
//
if ( data.minimumValue[i] != null && valueMeta.compare( valueData, validatorMeta, data.minimumValue[i] ) < 0 ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_LOWER_THAN_ALLOWED_MINIMUM,
BaseMessages.getString( PKG, "Validator.Exception.LowerThanMinimumValue", field.getFieldName(),
valueMeta.getString( valueData ), data.constantsMeta[i].getString( data.minimumValue[i] ) ),
field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// Maximum value
//
if ( data.maximumValue[i] != null && valueMeta.compare( valueData, validatorMeta, data.maximumValue[i] ) > 0 ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_HIGHER_THAN_ALLOWED_MAXIMUM,
BaseMessages.getString( PKG, "Validator.Exception.HigherThanMaximumValue", field.getFieldName(),
valueMeta.getString( valueData ), data.constantsMeta[i].getString( data.maximumValue[i] ) ),
field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// In list?
//
if ( field.isSourcingValues() || data.listValues[i].length > 0 ) {
boolean found = false;
for ( Object object : data.listValues[i] ) {
if ( object != null && data.listValues[i] != null
&& valueMeta.compare( valueData, validatorMeta, object ) == 0 ) {
found = true;
}
}
if ( !found ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_VALUE_NOT_IN_LIST,
BaseMessages.getString( PKG, "Validator.Exception.NotInList", field.getFieldName(), valueMeta
.getString( valueData ) ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
}
// Numeric data or strings with only
if ( field.isOnlyNumericAllowed() ) {
if ( valueMeta.isNumeric() || !containsOnlyDigits( valueMeta.getString( valueData ) ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_NON_NUMERIC_DATA,
BaseMessages.getString( PKG, "Validator.Exception.NonNumericDataNotAllowed",
field.getFieldName(), valueMeta.toStringMeta() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
}
// Does not start with string value
//
if ( !Const.isEmpty( data.startString[i] ) && !stringValue.startsWith( data.startString[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_DOES_NOT_START_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.DoesNotStartWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getStartString() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// Ends with string value
//
if ( !Const.isEmpty( data.endString[i] ) && !stringValue.endsWith( data.endString[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_DOES_NOT_END_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.DoesNotStartWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getEndString() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}
// Starts with string value
//
if ( !Const.isEmpty( data.startStringNotAllowed[i] )
&& stringValue.startsWith( data.startStringNotAllowed[i] ) ) {
KettleValidatorException exception =
new KettleValidatorException( this, field, KettleValidatorException.ERROR_STARTS_WITH_STRING,
BaseMessages.getString( PKG, "Validator.Exception.StartsWithString", field.getFieldName(),
valueMeta.getString( valueData ), field.getStartStringNotAllowed() ), field.getFieldName() );
exceptions.add( exception );
if ( !meta.isValidatingAll() ) {
return exceptions;
}
}